package com.jackstraw.create.param;

import java.util.HashMap;
import java.util.Map;

/**
 * 所在包：com.wenhe.backTemplate.utils
 * 文件名：
 * 版权：稻草人.
 * 项目：backTemplate
 * 功能描述：
 * 修改人：wenhe
 * 修改时间：2019-11-05 16:21
 * @author jackstraw
 */
public class DbToJavaParamTypeMap {

    /**
     * 变量类型对应的键值对
     *      数据库变量全初始化为小写
     */
    private static Map<String, String> map = null;

    /**
     * 根据mysql字段类型获取对应的java类型
     * @param mysqlColumnType
     * @return
     */
    public static String getJavaParamType(String mysqlColumnType) {
        // 默认初始化mysql数据库
        if (map == null) {
            initMysqlMap();
        }

        mysqlColumnType = mysqlColumnType.toLowerCase();
        mysqlColumnType = mysqlColumnType.split(" ")[0];
        String javaParamType = map.get(mysqlColumnType);
        if (javaParamType == null) {
            System.err.println("===========================当前数据类型尚未添加控制："+mysqlColumnType);
        }
        return javaParamType;
    }

    /**
     * 初始化mysql转换map
     */
    private static void initMysqlMap() {
        map = new HashMap<>(40);
        map.put("bigint", "Long");
        map.put("varchar", "String");
        map.put("int", "Integer");
        map.put("tinyint", "Boolean");
        map.put("bit", "Boolean");
        map.put("tinyint unsigned", "Integer");
        map.put("decimal", "BigDecimal");
        map.put("text", "String");
        map.put("datetime", "LocalDateTime");
        map.put("date", "LocalDate");
        map.put("double", "Double");
        map.put("int unsigned", "Integer");
        map.put("timestamp", "Long");
        map.put("char", "String");
        map.put("smallint", "Integer");
        map.put("varbinary", "String");
        map.put("longtext", "String");
        map.put("uniqueidentifier", "String");
        map.put("nvarchar", "String");
        map.put("nchar", "String");
        map.put("json", "String");
    }
}
